import * as FormulaFunc from '@formulajs/formulajs'

class FunctionCall {
  constructor() {
    Object.assign(FunctionCall.prototype, FormulaFunc)
  }
  /**
   * 执行脚本
   * @param str
   * @param bindVm 绑定的vm对象，需要手动传入，使用的变量名为vm
   * @returns {*}
   */
  execute(str,bindVm) { // 执行函数
    console.log("执行JS脚本 ",str)
    const fn = new Function('vm',
      'with(this) {  ' + str + '; }' // 使用 `with` 来确保从当前实例中查找函数
    ).bind(this)
    return fn(bindVm)
  }
  
}
// 单例对象，保证全局只有一个实例
const functionCore = new FunctionCall()

export default functionCore
